<?php

/**
 * Skriver ut inloggningsformulär och hanterar indata från användaren
 */ 
class LoginView implements IView
{	
	// Strängar ur POST-arrayen
	private static $m_username 		= "username";
	private static $m_password 		= "password";
	private static $m_login 		= "login";
	private static $m_logout 		= "logout";
	private static $m_rememberMe 	= "rememberMe";
	
	/**
	 * Kapslar in en sträng med en html-tagg
	 * @param string HTML-tag to use
	 * @param string String to encapsulate
	 */
	public function EncapsulateString($tag, $string)
	{
		return "<$tag>$string</$tag>";
	}
	
	/**
	 * HTML för login-box
	 * @return HTML String
	 */	
	public function CreateLoginBox()
	{	
		$html = 
		'<form method="post" action="index.php">
			<fieldset>
				<label for="username">Användarnamn: </label>
				<input type="textfield" id="username" name="' . self::$m_username .'" /><br/>
				<label for="password">Lösenord: </label>
				<input type="password" id="password" name="' . self::$m_password .'" /><br/>
				<input type="submit" value="Logga in" name="' . self::$m_login .'" />
				<label for="rememberMe">Kom ihåg mig: </label>
				<input type="checkbox" id="rememberMe" name="' . self::$m_rememberMe .'" />
			</fieldset>
		</form>';
		
		return $html;
	}
	
	/**
	 * HTML för logout-box
	 * @return HTML String
	 */
	public function CreateLogoutBox()
	{
		$html = 
		'<form method="post" action="index.php">
			<input type="submit" value="Logga ut" name="' . self::$m_logout .'" />
		</form>';
		
		return $html;
	}
	
	/**
	 * Hämtar användarnamnet ur GET-arrayen
	 * @return String
	 */
	public function GetUserName()
	{
		if(isset($_POST[self::$m_username]))
			return $_POST[self::$m_username];
		
		return NULL;
	}
	
	/**
	 * Hämtar lösenordet ur GET-arrayen
	 * @return String
	 */
	public function GetPassword()
	{
		if(isset($_POST[self::$m_password]))
			return $_POST[self::$m_password];
		
		return NULL;
	}
	
	/**
	 * Kontrollerar om användaren försökt att logga in
	 * @return Boolean
	 */
	public function TriedToLogin()
	{
	 	if(isset($_POST[self::$m_login]))
			return true;
		
		return false;
	}

	/**
	 *	Kontrollerar om användaren försökt logga ut
	 *  @return Boolean
	 */
	public function TriedToLogout()
	{
		if(isset($_POST[self::$m_logout]))
			return true;
		
		return false;
	}
	 
	 /**
	 * Kontrollerar om användaren vill fortsätta vara inloggad
	 * @param seconds int
	 * @return bool
	 */
	public function RememberMe($seconds)
	{
		if(isset($_POST[self::$m_rememberMe]) && $_POST[self::$m_rememberMe] == "on")
		{
			setcookie(self::$m_username,$this->GetUserName(),time() + $seconds);
			setcookie(self::$m_password,$this->GetPassword(),time() + $seconds);
			return true;
		}
		else
		{
			// Tar bort cookies (så utgångsdatum passerat)
			$this->ForgetMe();
			return false;	
		}
	}
	
	/**
	 * Tar bort cookien över användarens inloggningsuppgifter
	 */
	public function ForgetMe()
	{
		if(isset($_COOKIE[self::$m_username]) && isset($_COOKIE[self::$m_password]))
		{
			// Tar bort cookies (så utgångsdatum passerat)
			setcookie(self::$m_username,"",time() - 1);
			setcookie(self::$m_password,"",time() - 1);
			return true;
		}
		else 
			return false;
	}
	
	/**
	 * Returnerar sparat användarnamn och lösenord från cookie
	 * @return array username[0] and password[1]
	 */
	public function GetSavedLogin()
	{
		// Returnera användarnamnet och lösenord om dessa finns sparade i en Cookie
		if(isset($_COOKIE[self::$m_username]) && isset($_COOKIE[self::$m_password]))
			return array($_COOKIE[self::$m_username], $_COOKIE[self::$m_password]);
		else
			return null;
	}
}
?>